const path = require("path");

function resolve(dir) {
  return path.join(__dirname, dir);
}

module.exports = {
  chainWebpack: (config) => {
    // 由于我们修改了渲染进程目录，修改'@'的alias
    config.resolve.alias.set("@", resolve("src/renderer"));
  },
  pages: {
    //在此可以添加多页应用
    index: {
      entry: "src/renderer/main.js",
      template: "public/index.html",
      filename: "index.html",
      title: "electron-vue",
      chunks: ["chunk-vendors", "chunk-common", "index"],
    },
  },
  pluginOptions: {
    electronBuilder: {
      mainProcessFile: "src/main/index.js", // 主进程入口文件
      mainProcessWatch: ["src/main"], // 检测主进程文件在更改时将重新编译主进程并重新启动
      preload: "src/main/preload.js", // 预加载js
      //查看更多 https://www.electron.build/
      builderOptions: {
        //应用程序 ID，虽不是必填但是强烈建议设置显示ID
        appId: "com.electron.evet",
        //产品名称：可执行文件名称
        //productName: process.env.VUE_APP_NAME,
        //应用程序版权
        copyright: process.env.VUE_APP_COPYRIGHT,
        // 注入属性到 package.json
        extraMetadata: {
          //当没有设置productName时，用name当产品名称；反之则是productName
          name: process.env.VUE_APP_NAME,
          version: process.env.VUE_APP_VERSION,
          //   作者注入不进去，这是为什么？
          //   author: "注入不进",
        },
        //目标平台：windows
        win: {
          //应用程序图标的路径。默认为build/icon.ico，最小为256pxx256px
          icon: undefined,
          //目标包类型
          target: "nsis",
          //打包出来的应用程序文件名称
          artifactName:
            `${process.env.VUE_APP_NAME}(v${process.env.VUE_APP_VERSION})-${process.env.VUE_APP_ENV}` +
            ".${ext}",
        },
        nsis: {
          //不必明确指定它——基于名称的应用程序图标的路径。UUID v5将从您的appId或name生成。这意味着一旦您的应用程序在使用中（或名称，如果未设置） ，您不应更改 appId 。appId可以安全地更改应用程序产品名称（标题）或描述
          //guid: "F3F1A6E7-ED00-CC77-9CE5-B93ACDCD181E",
          //是否创建一键安装程序
          oneClick: false,
          // 允许请求提升。若为false，则用户必须使用提升的权限重新启动安装程序
          allowElevation: true,
          //是否允许修改安装目录
          allowToChangeInstallationDirectory: true,
          //安装程序图标的路径，相对于构建资源或项目目录。默认为build/installerIcon.ico或应用程序图标
          installerIcon: undefined,
          //卸载程序图标的路径，相对于构建资源或项目目录。默认为build/uninstallerIcon.ico或应用程序图标
          uninstallerIcon: undefined,
          //控制面板中的卸载程序显示名称。
          uninstallDisplayName: `${process.env.VUE_APP_NAME} ${process.env.VUE_APP_VERSION}`,
          //仅限一键式安装程序。标题图标的路径（进度条上方），相对于构建资源或项目目录。默认为build/installerHeaderIcon.ico或应用程序图标
          installerHeaderIcon: undefined,
          //是否创建桌面快捷方式设置为always是否在重新安装时也重新创建（即使被用户删除）
          createDesktopShortcut: true,
          //是否创建开始菜单快捷方式
          createStartMenuShortcut: true,
          //将用于所有快捷方式的名称。默认为应用程序名称
          shortcutName: process.env.VUE_APP_NAME,
          //完成后是否运行已安装的应用程序。
          runAfterFinish: false,
          //仅限一键式安装程序。卸载时是否删除应用数据。
          deleteAppDataOnUninstall: true,
          //用于自定义安装程序的 NSIS 脚本的路径。默认为build/installer.nsi
          script: undefined,
        },
      },
    },
  },
};
